Capteurs de sol
OLEM possède 6 capteurs qui détectent le sol en permanence. Ils renvoient un signal qui dépend de la couleur de la zone située juste sous le capteur : une surface blanche donne le signal le plus fort, une surface noire ou l'absence de surface le signal le plus faible.
Leur numéro est indiqué sur l'image ci-dessous :

Par commodité, le signal est déjà traité et l'API permet de :
- vérifier si le sol est détecté (c'est-à-dire qu'OLEM est sur le plateau et pas au bord), voir
ir_floor_is_floor_present() - compter les capteurs qui ne voient pas le sol, voir
ir_floor_get_void_count() - obtenir le signal de chaque capteur, voir
ir_floor_get_sensor_value() - vérifier si une carte a été détectée [API Python bientôt disponible]
- vérifier si un bord de tuile est détecté [API Python bientôt disponible]
Les côtés d'OLEM sont donnés par les constantes FRONT, RIGHT, BACK et LEFT, listées avec les capteurs latéraux.
Exemple
Soulevez les côtés d'OLEM un par un : les côtés sans sol sont affichés.
import olem
print("Lift the sides of OLEM one at a time")
start = olem.get_time_ms()
while olem.get_time_ms() - start < 20000:
sides = ""
if not olem.ir_floor_is_floor_present(olem.FRONT):
sides += "F"
if not olem.ir_floor_is_floor_present(olem.RIGHT):
sides += "R"
if not olem.ir_floor_is_floor_present(olem.BACK):
sides += "B"
if not olem.ir_floor_is_floor_present(olem.LEFT):
sides += "L"
if sides:
print("No floor: " + sides + ", " + str(olem.ir_floor_get_void_count()) + " sensors see the void")
olem.delay_ms(200)
Fonctions
ir_floor_get_sensor_value(sensor)
Get the signal of a floor sensor. The signal is the strongest on a white surface and the weakest on a black surface or when there is no floor.
OLEM has 6 floor sensors, numbered clockwise: 0 front left, 1 front right, 2 right, 3 back right, 4 back left, 5 left.
| Parameter | Description |
|---|---|
sensor | index of the sensor, from 0 to 5 |
Returns: signal in ADC units (LSB), or 0 if sensor is not valid
ir_floor_is_floor_present(side)
Check if there is floor under a side of OLEM, to detect the edge of the board or table.
| Parameter | Description |
|---|---|
side | FRONT, RIGHT, BACK or LEFT |
Returns: True if the floor is detected, False otherwise or if side is not valid
ir_floor_get_void_count()
Returns: number of floor sensors that do not see the floor